package work.tools
{
	/**
	 * 
	 * @author 张峰
	 * @QQ:37520626
	 * @Email:7677@163.com
	 * @Date:2012-9-20 下午4:38:51
	 * 
	 */
	public class HouseCalculator
	{
		public function HouseCalculator()
		{
		}
		/**
		 * 等额本息还款计算 
		 * @param month 贷款总月数
		 * @param principal 贷款金额
		 * @param mir 月利率(年利率/12)
		 * @return Object{tm:总还款,tl:总利息,data:每月还款}
		 * 
		 */
		public static function debx(month:uint,principal:Number,mir:Number):Object
		{
			var obj:Object=new Object();
			var num:Number=principal*mir*Math.pow(1+mir,month)/(Math.pow(1+mir,month)-1);
			obj.tm=toMoney(num*month);
			obj.tl=toMoney(obj.tm-principal);
			obj.data=toMoney(num);
			return obj;
		}
		
		/**
		 * 等额本金还款计算 
		 * @param month 贷款总月数
		 * @param principal 贷款金额
		 * @param mir 月利率(年利率/12)
		 * @return Object{tm:总还款,tl:总利息,data:每月还款}
		 * 
		 */
		public static function debj(month:uint,principal:Number,mir:Number):Object
		{
			var yh:Number=0;
			var arr:Array=[];
			var ygh:Number=principal/month;
			
			var obj:Object=new Object();
			var tm:Number=0;
			for(var i:uint=0;i<month;i++)
			{
				arr[i]=toMoney(ygh+(principal-yh)*mir);
				tm+=arr[i];
				yh+=ygh;
			}
			obj.tm=toMoney(tm);
			obj.tl=toMoney(obj.tm-principal);
			obj.data=arr;
			return obj;
		}
		
		private static function toMoney(n:Number):Number
		{
			return Math.round(n*100)/100;
		}
	}
}